home *** CD-ROM | disk | FTP | other *** search
/ Spanish Scene 1 / SpanishScene1.iso / spanish pack n°1 by llfb / --llfb-- / programas / sources1.dms / sources1.adf / SOURCES / Vectores / TransformingDotVector.ASM < prev   
Assembly Source File  |  1996-06-04  |  12KB  |  446 lines

  1. ;DOTVECTOR BY LADO OF FI-RE CREW IN 1992 !
  2.     
  3.     
  4. ;    org $25000
  5. ;    load $25000
  6.  
  7.  
  8.     Section    Roman,code_c
  9.  
  10.     
  11. ;    >extern 'DF0:sources/raytr.dat',sinus
  12.     
  13.  
  14. j    lea $30000,a0             ;memoria torlese
  15. lo    clr.l (a0)+
  16.     cmp.l #$60000,a0
  17.     bcs lo
  18.     move.w #400,d7           ;make screen clear rutin
  19.     lea cleen(pc),a0
  20. db    move.l code(pc),(a0)+
  21.     dbf d7,db
  22.     move.w #$4e75,(a0)       ;RTS a vegere
  23.  
  24.     lea row(pc),a0
  25.     moveq #0,d0
  26.     move.w #$d1,d7
  27. nmi    move.w d0,(a0)+
  28.     add.w #$50,d0
  29.     dbf d7,nmi
  30.     
  31.     lea $dff000,a6           ;custom
  32. wr    move.l 4(a6),d0
  33.     lsr.l #8,d0
  34.     cmp.w #$138,d0
  35.     bne wr
  36.     move.w #$7fff,$96(a6)    ;clear  DMACON
  37.     move.w #$7fff,$9a(a6)    ;clear  INTENA
  38.     move.l #copper,$84(a6)   
  39.     clr.w $8a(a6)            ;start copper
  40.     move.w #$87d0,$96(a6)    ;DMACON
  41.     move.w #$c010,$9a(a6)
  42.  
  43. h1    bsr wait                 ;waitblitter
  44. h2    move.l 4(a6),d0          ;waitraster
  45.     lsr.l #8,d0
  46.     cmp.w #$d0,d0
  47.     bne h2
  48.     bsr filler               
  49.     bsr chcor
  50.     btst #6,$bfe001
  51.     bne h1
  52.     bsr wait
  53.     
  54.     move.w #$7fff,$96(a6)
  55.     move.w #$7fff,$9a(a6)
  56.     clr.w $88(a6)            ;start original copper
  57.     move.w #$87f0,$96(a6)
  58.     move.w #$e02c,$9a(a6)
  59.     clr.l d0
  60.     rts                      ;END
  61.     
  62.  
  63. filler    add.w #2,addx           ;xszog novelese
  64.     and.w #$1ff,addx   
  65.     add.w #2,addy           ;yszog novelese    
  66.     and.w #$1ff,addy
  67.     add.w #0,addz           ;zszog novelese        
  68.     and.w #$1ff,addz
  69.     lea coords0(pc),a0        ;pontok x,y,z koordinatai
  70.     lea sinus(pc),a1         ;sinus ertekek
  71.     lea $80(a1),a3           ;cosinus ertekek
  72.     lea tarolo(pc),a2        ;2D x,y letarolasa
  73.     lea addx(pc),a4          ;szogek
  74.     move.l #16-1,d7            ;pontok szama !!!!!!!!!!!!!!!!!!!!!!!!!!!!
  75. h3    movem.w (a0)+,d0/d1/d6   ;x,y,z
  76.     move.w 4(a4),d5          ;Zszog
  77.     bsr calcul               ;Z-rotation
  78.     move.w d0,d6             ;X tarolasa
  79.     move.w d3,d0             ;Y
  80.     move.w (a4),d5           ;Xszog
  81.     bsr calcul               ;X-rotation
  82.     move.w d0,d6             ;uj Y tarolasa
  83.     move.w d3,d0             ;Z
  84.     move.w 2(a4),d5          ;Yszog
  85.     bsr calcul               ;Y-rotation
  86.     exg d0,d3                ;X csere Z-vel    Z=d3
  87.     moveq #12,d6             ;lekepezes 2D-re
  88.     move.w #$650,d2
  89.     sub.w d3,d2              ;$444-Z
  90.     muls d2,d0               ;z'*x
  91.     asr.l d6,d0              ;z'*x/2048=2D X
  92.     muls d2,d1               ;z'*y
  93.     asr.l d6,d1              ;z'*y/2048=2D Y
  94.     add.w #150,d0         ;X=X+150     kozepre a kepernyon           
  95.     add.w #95,d1            ;Y=Y+100
  96.     move.w d0,(a2)+         ;2D X tarolasa
  97.     move.w d1,(a2)+          ;2D Y tarolasa
  98.     dbf d7,h3                ;14-szer               
  99.  
  100.     eor.w #$8000,erno+2        ;kepernyo csere
  101.     eor.w #$8000,copscr       ;csere a copperben is
  102.     eor.w #$8000,copscr+4
  103.  
  104.     movem.l null(pc),d0-d7/a1-a6   ;regiszterek nullazasa
  105.     move.l erno(pc),a0
  106.     lea $3e00(a0),a0
  107.     bsr cleen
  108.     lea $dff000,a6    
  109.     
  110.     move.w #14,wor              ;6 lap van !!!!!!!!!!!!!!!!!!!!!!!!!!!
  111.     lea tarolo(pc),a1          ;2D x,y coords
  112.     lea meghat(pc),a4          ;pontok structuraja
  113. l7    lea tarol2(pc),a5          ;tarolo
  114.     move.l erno(pc),a2         ;aktualis kepernyo
  115.     movem.w (a4),d0/d1/d2      ;lathatosag eldontese
  116.     move.w (a1,d1.w),d3        ;x1
  117.     sub.w (a1,d0.w),d3         ;X1-X0
  118.     move.w 2(a1,d2.w),d4       ;y2
  119.     sub.w 2(a1,d1.w),d4        ;Y2-Y1
  120.     move.w 2(a1,d1.w),d5       ;y1
  121.     sub.w 2(a1,d0.w),d5        ;Y1-Y0
  122.     move.w (a1,d2.w),d6        ;x2
  123.     sub.w (a1,d1.w),d6         ;X2-X1
  124.     mulu d4,d3                 ;(y2-y1)(x1-x0)=d3
  125.     mulu d6,d5                 ;(y1-y0)(x2-x1)=d5
  126.     sub.w d5,d3                
  127.     bmi vakon                  ;nem latszik a lap
  128.     add.l #$28,a2              ;akkor masik kepernyo
  129. vakon    moveq #3,d7                ;4-szer
  130. allit    move.w (a4)+,d0            ;pont
  131.     move.l (a1,d0.w),(a5)+     ;4 pont masolasa
  132.     dbf d7,allit
  133.     lea tarol2(pc),a0          
  134.     lea row(pc),a3             
  135.     moveq #3,d7                ;/8
  136.     move.w (a0),d0             ;x1
  137.     sub.w 4(a0),d0             ;x1-x2
  138.     swap d0
  139.     clr.w d0
  140.     asr.l d7,d0
  141.     move.w 2(a0),d1            ;y1
  142.     sub.w 6(a0),d1             ;y1-y2
  143.     swap d1
  144.     clr.w d1
  145.     asr.l d7,d1
  146.     move.w 8(a0),d2            ;x3
  147.     sub.w 4(a0),d2             ;x3-x2
  148.     swap d2
  149.     clr.w d2
  150.     asr.l d7,d2
  151.     move.w 10(a0),d3           ;y3
  152.     sub.w 6(a0),d3             ;y3-y2
  153.     swap d3
  154.     clr.w d3
  155.     asr.l d7,d3
  156.     move.w 12(a0),d4           ;x4
  157.     sub.w 8(a0),d4             ;x4-x3
  158.     swap d4
  159.     clr.w d4
  160.     asr.l d7,d4
  161.     move.w 14(a0),d5           ;y4
  162.     sub.w 10(a0),d5            ;y4-y3
  163.     swap d5
  164.     clr.w d5
  165.     asr.l d7,d5
  166.     sub.l d0,d4                ;(x4-x3)-(x1-x2)
  167.     asr.l d7,d4
  168.     move.l d4,plc
  169.     sub.l d1,d5                ;(y4-y3)-(y1-y2)
  170.     asr.l d7,d5
  171.     move.l d5,plc+4
  172.     move.w 4(a0),d6            ;x2
  173.     swap d6
  174.     clr.w d6
  175.     move.l d6,plc+8
  176.     move.w 6(a0),d6            ;y2
  177.     swap d6
  178.     clr.w d6
  179.     move.l d6,plc+12
  180.     move.l d2,plc+16
  181.     move.l d3,plc+20
  182.     bsr wait    
  183.     move.w #8,wor+2
  184. l1    moveq #8,d7
  185.     move.l plc+8(pc),d2        ;kezdo x
  186.     move.l plc+12(pc),d3       ;kezdo y
  187. l2    move.l d2,d4               
  188.     swap d4
  189.     move.l d3,d5
  190.     swap d5
  191.     move.w d4,d6               ;x2
  192.     lsr.w #3,d4                ;x2/8=oszlop
  193.     not.b d6                   ;a byteon belul hanyadik bitet kell setbe
  194.     add.w d5,d5                ;word
  195.     add.w (a3,d5.w),d4         ;sor
  196.     bset d6,(a2,d4.w)          ;bit beallitasa 1-be
  197.     add.l d0,d2                ;x=x+x1-x2
  198.     add.l d1,d3                ;y=y+y1-y2
  199.     dbf d7,l2
  200.     add.l plc(pc),d0
  201.     add.l plc+4(pc),d1
  202.     move.l plc+16(pc),d6
  203.     add.l d6,plc+8
  204.     move.l plc+20(pc),d6
  205.     add.l d6,plc+12
  206.     subq.w #1,wor+2
  207.     bpl l1
  208.     subq.w #1,wor
  209.     bne l7
  210.     rts
  211.         
  212.     
  213. calcul    move.w (a3,d5.w),d4     ;cos ertek
  214.     move.w (a1,d5.w),d5     ;sin ertek
  215.     move.w d0,d2            ;c1
  216.     move.w d1,d3        ;c2
  217.     muls d4,d0        ;c1*cos(c0angle)
  218.     muls d5,d1        ;c2*sin(c0angle)
  219.     muls d4,d3        ;c2*cos(c0angle)
  220.     muls d5,d2        ;c1*sin(c0angle)
  221.     sub.l d1,d0        ;c1*cos(c0angle)-c2*sin(c0angle)
  222.     add.l d2,d3        ;c2*cos(c0angle)+c1*sin(c0angle)
  223.     add.l d0,d0        
  224.     add.l d3,d3
  225.     swap d0                 ;uj c1
  226.     swap d3                 ;uj c2
  227.     move.w d6,d1        
  228.     rts
  229.  
  230. ;********************* change coordinates **********************
  231.  
  232. chcor    tst.w lass
  233.     bmi kell
  234.     subq.w #1,lass
  235.     rts
  236. kell    moveq #0,d6
  237.     moveq #[16*3]-1,d7      ;pont x,y,z
  238.     lea coords0(pc),a0
  239.     move.l nextcor(pc),a1
  240. cv4    cmpm.w (a0)+,(a1)+
  241.     beq cv1
  242.     ble cv2
  243.     addq.w #5,-2(a0)
  244.     bra cv3
  245. cv2    subq.w #5,-2(a0)
  246. cv3    addq.w #1,d6
  247. cv1    dbf d7,cv4            
  248.     tst.w d6
  249.     bne nem
  250.     move.w #50,lass
  251.     add.l #[[16*3]*2],nextcor     ;points x,y,z  word !!!!
  252.     addq.w #1,obj
  253. dik    cmp.w #5,obj
  254.     bne nem
  255.     cmp.w #5,dik+2
  256.     bne nb2
  257.     addq.w #1,dik+2
  258. nb2    clr.w obj
  259.     move.l #coords1,nextcor
  260. nem    rts    
  261.  
  262.  
  263. wait    btst #$e,2(a6)          ;waitblitter
  264.     bne wait
  265.     rts
  266.  
  267. code    movem.l d0-d7/a1-a6,-(a0)
  268.  
  269.  
  270. copper    dc.w $100,$200,$8e,$2c81,$90,$2cc1,$92,$38,$94,$d0
  271.     dc.w $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
  272.     dc.w $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
  273.     dc.w $180,0,$108,$28,$10a,$28
  274. copcol    dc.w $182,$44f,$184,$11f,$186,$33f
  275.     dc.w $e0,3,$e4,3,$e2
  276. copscr    dc.w 0,$e6,$28
  277.     dc.w $3001,$fffe,$100,$2200,$180,$ff0,$3101,$fffe,$180,0
  278.     dc.w $f001,$fffe,$100,$200,$180,$ff0,$f101,$fffe,$180,0
  279.     dc.w $ffff,$fffe
  280. ;!!!!!!!!!!!!!!!!!!!!    LADO !  Az adatok a kovetkezok : !!!!!!!!!!
  281. ;!!!!!!!!!       ****          METAMORF KOCKA  (6 fazis)        ****
  282. ;!!!!!!!!!
  283. ;!!!!!!!!!     addx= 2 , addy= 2 , addz= 0
  284. ;!!!!!!!!!     kiindulas: addx= 0 , addy= 0 , addz= 0 
  285. ;!!!!!!!!!     zoom= 650
  286. ;!!!!!!!!!     14 db lap, 16 db pont (!!!! 2 raszter alatt fut le !!!)
  287. ;!!!!!!!!!     copcol: 182=$44f , 184=$11f , 186=$33f
  288. ;!!!!!!!!!
  289. ;!!!!!!!!!     Csak a koordinatak modosulnak !!!!!!!!!!!!!!!!!!!!!!!
  290. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  291.  
  292. coords0    dc.w 150,-150,150            ;0. pont
  293.     dc.w 150,-50,150             ;1. 
  294.     dc.w -150,-50,150            ;2. 
  295.     dc.w -150,-150,150           ;3.
  296.     dc.w 150,-150,-150            ;4.
  297.     dc.w 150,-50,-150            ;5.
  298.     dc.w -150,-50,-150            ;6.
  299.     dc.w -150,-150,-150           ;7.
  300.     dc.w 150,50,150               ;8. 
  301.     dc.w 150,150,150             ;9. 
  302.     dc.w  -150,150,150             ;10. 
  303.     dc.w  -150,50,150              ;11.
  304.     dc.w  150,50,-150         ;12.
  305.     dc.w  150,150,-150           ;13.
  306.     dc.w  -150,150,-150           ;14.
  307.     dc.w  -150,50,-150          ;15.
  308.  
  309. coords1    dc.w 150,-150,150            ;0. pont
  310.     dc.w 150,-50,150             ;1. 
  311.     dc.w -150,-50,150            ;2. 
  312.     dc.w -150,-150,150           ;3.
  313.     dc.w 150,-150,-150            ;4.
  314.     dc.w 150,-50,-150            ;5.
  315.     dc.w -150,-50,-150            ;6.
  316.     dc.w -150,-150,-150           ;7.
  317.     dc.w 150,50,150               ;8. 
  318.     dc.w 150,150,150             ;9. 
  319.     dc.w  -150,150,150             ;10. 
  320.     dc.w  -150,50,150              ;11.
  321.     dc.w  150,50,-150         ;12.
  322.     dc.w  150,150,-150           ;13.
  323.     dc.w  -150,150,-150           ;14.
  324.     dc.w  -150,50,-150          ;15.
  325.  
  326. coords2    dc.w 50,-150,50                ;0. pont
  327.     dc.w 150,-50,150             ;1. 
  328.     dc.w -150,-50,150            ;2. 
  329.     dc.w -50,-150,50               ;3.
  330.     dc.w 50,-150,-50            ;4.
  331.     dc.w 150,-50,-150            ;5.
  332.     dc.w -150,-50,-150            ;6.
  333.     dc.w -50,-150,-50           ;7.
  334.     dc.w 150,50,150               ;8. 
  335.     dc.w 50,150,50                 ;9. 
  336.     dc.w  -50,150,50             ;10. 
  337.     dc.w  -150,50,150              ;11.
  338.     dc.w  150,50,-150         ;12.
  339.     dc.w  50,150,-50           ;13.
  340.     dc.w  -50,150,-50           ;14.
  341.     dc.w  -150,50,-150          ;15.
  342.  
  343. coords3    dc.w 15,-80,55                ;0. pont
  344.     dc.w 25,-40,60                 ;1. 
  345.     dc.w -40,-50,90                ;2. 
  346.     dc.w -30,-180,30               ;3.
  347.     dc.w 15,-80,-55            ;4.
  348.     dc.w 25,-40,-60            ;5.
  349.     dc.w -40,-50,-90            ;6.
  350.     dc.w -30,-180,-30           ;7.
  351.     dc.w 50,50,70                   ;8. 
  352.     dc.w 20,160,50                 ;9. 
  353.     dc.w  -30,180,50             ;10. 
  354.     dc.w  -50,50,120              ;11.
  355.     dc.w  50,50,-70         ;12.
  356.     dc.w  20,160,-50           ;13.
  357.     dc.w  -30,180,-50           ;14.
  358.     dc.w  -50,50,-120          ;15.
  359.  
  360. coords4    dc.w 50,-150,90                ;0. pont
  361.     dc.w 100,-50,90             ;1. 
  362.     dc.w -100,-150,90            ;2. 
  363.     dc.w -50,-200,90               ;3.
  364.     dc.w 50,-150,-90            ;4.
  365.     dc.w 100,-50,-90            ;5.
  366.     dc.w -100,-150,-90            ;6.
  367.     dc.w -50,-200,-90           ;7.
  368.     dc.w 100,50,90                   ;8. 
  369.     dc.w 80,200,90                 ;9. 
  370.     dc.w  -50,150,90             ;10. 
  371.     dc.w  -100,100,90              ;11.
  372.     dc.w  100,50,-90         ;12.
  373.     dc.w  80,200,-90           ;13.
  374.     dc.w  -50,150,-90           ;14.
  375.     dc.w  -100,100,-90          ;15.
  376.  
  377. coords5    dc.w 50,-150,50                ;0. pont
  378.     dc.w 100,-50,100             ;1. 
  379.     dc.w -100,-50,100            ;2. 
  380.     dc.w -50,-150,50               ;3.
  381.     dc.w 50,-150,-50            ;4.
  382.     dc.w 100,-50,-100            ;5.
  383.     dc.w -100,-50,-100            ;6.
  384.     dc.w -50,-150,-50           ;7.
  385.     dc.w 150,50,150               ;8. 
  386.     dc.w 50,150,50                 ;9. 
  387.     dc.w  -50,150,50             ;10. 
  388.     dc.w  -150,50,150              ;11.
  389.     dc.w  150,50,-150         ;12.
  390.     dc.w  50,150,-50           ;13.
  391.     dc.w  -50,150,-50           ;14.
  392.     dc.w  -150,50,-150          ;15.
  393.  
  394. coords6    dc.w 100,-200,100           ;0. pont
  395.     dc.w 50,-120,50             ;1. 
  396.     dc.w -50,-120,50            ;2. 
  397.     dc.w -100,-200,100           ;3.
  398.     dc.w 100,-200,-100            ;4.
  399.     dc.w 50,-120,-50            ;5.
  400.     dc.w -50,-120,-50            ;6.
  401.     dc.w -100,-200,-100           ;7.
  402.     dc.w 150,50,150               ;8. 
  403.     dc.w 80,150,80                 ;9. 
  404.     dc.w  -80,150,80             ;10. 
  405.     dc.w  -150,50,150              ;11.
  406.     dc.w  150,50,-150         ;12.
  407.     dc.w  80,150,-80           ;13.
  408.     dc.w  -80,150,-80           ;14.
  409.     dc.w  -150,50,-150          ;15.
  410.  
  411.  
  412.  
  413. meghat    dc.w 0*4,1*4,2*4,3*4 ;1. lap
  414.     dc.w 4*4,0*4,3*4,7*4 ;2.
  415.     dc.w 4*4,7*4,6*4,5*4 ;3.
  416.     dc.w 0*4,4*4,5*4,1*4 ;4.
  417.     dc.w 3*4,2*4,6*4,7*4 ;5.
  418.     dc.w 1*4,8*4,11*4,2*4 ;6.
  419.     dc.w 5*4,6*4,15*4,12*4 ;7.
  420.     dc.w 1*4,5*4,12*4,8*4;8.
  421.     dc.w 2*4,11*4,15*4,6*4 ;9.
  422.     dc.w 8*4,9*4,10*4,11*4 ;10.
  423.     dc.w 11*4,10*4,14*4,15*4 ;11.
  424.     dc.w 12*4,15*4,14*4,13*4 ;12.
  425.     dc.w 13*4,14*4,10*4,9*4 ;13.
  426.     dc.w 8*4,12*4,13*4,9*4 ;14.
  427.     
  428. ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  429.  
  430. addx    dc.w 0
  431. addy    dc.w 0       ;yangle
  432. addz    dc.w 0           ;zangle
  433. wor    dc.w 0,0
  434. erno    dc.l $38000        ;kepernyo
  435. plc    blk.l 6,0
  436. null    blk.l 16,0
  437. row    blk.w $d2,0
  438. nextcor    dc.l coords2
  439. lass    dc.w 30
  440. obj    dc.w 0
  441. cleen    blk.l 500,0
  442. sinus    incbin "Coleccion_Sources1:Sources/Vectores/raytr.dat"
  443. tarol2    blk.b 40,0
  444. tarolo    blk.b 100,0
  445.  
  446.